Computer servers need an operating system (OS) image, usually stored on a disk, to boot-up and run software applications resident on the servers. Typically, the OS images are stored in the internal disks of the server and are referred to as boot-up disks. The servers that boot-up from their internal disks are confined to the OS image types stored in them. In a utility computing environment, resources, such as computing servers are provisioned dynamically for on-demand consumption as per a requested description. The resources in such an environment require the computing servers to boot-up from different OS images at different times as per the request description they are serving.
Provisioning servers with different OS images on their internal disks in an automated fashion is difficult and not scalable for multiple image types. Therefore, in a utility computing environment, the OS images are generally kept on an external disk connected to the computing servers over a network or Storage Area Network (SAN). The servers in such an environment boot via the SAN from this external disk. This typically provides the required flexibility to provide the servers with the capability to boot-up from different OS images at different times. The external disks are usually enclosed in their own dedicated hardware called “disk arrays”. The disk arrays are generally connected to the computing servers via the SAN.
Generally, the boot-up disk; whether external or internal can only be accessed by one server at any given time. Therefore, in a utility computing environment, whenever a computing server is provisioned for use, a dedicated boot-up disk with a requested OS image in the disk arrays is also provisioned. The process of provisioning such an external disk for a computing server to boot-up in a utility computing environment is referred to as “OS image provisioning” or just “image provisioning”. Typically, the process of OS image provisioning requires several steps. For each type of OS image; a disk with the master copy of the OS image is maintained in the disk array. The disk having the master copy of an OS image type is often referred to as a “golden image boot-up disk”.
Whenever a request for a particular type of OS image boot-up disk comes from one or more computing servers, a boot-up disk that is not currently in use is identified in the disk array and allocated to the computing server's disk. The requested OS image is then copied from the associated golden image boot-up disk to the allocated disk. The copied OS image from the allocated boot-up disk is then sent to the computing server via the SAN such that the allocated boot-up disk is dedicated to the computing server while the OS image is being sent to the computing server via the SAN.
Conventional methods use special image copying servers that read the OS image from the golden image disks and write them to the boot-up disk in the disk arrays that are allocated to the computing servers. This process generally requires the data comprising the OS image to be sent from the disk array containing the golden image disk to a special server memory and then to be allocated to the intended boot-up disk. These results in the OS image being sent twice through the SAN connecting the special image copy server to the disk array, i.e., once during reading from the golden image boot-up disk and once when writing the OS image to the intended boot-up disk.
Very often both the golden image disk and the destination intended boot-up disk reside in the disk array. Such a process of communicating the data including the OS image in and out of the disk array via the SAN can at times overwhelm the SAN when there are concurrent requests for multiple different OS images that need to be provisioned. At times, this process can considerably slow down the OS image provisioning process in a utility computing environment. Further, the image copy process used in the conventional methods is generally not scalable to the size and number of OS image boot-up requests received from one or more computing servers in a utility computing environment. Furthermore, the image copying servers in the conventional methods can require a large amount of memory and very large I/O bandwidth. In addition, the conventional image copy process uses rudimentary raw copy mechanisms, for example the Unix “dd” command to copy the image. This can be very slow and can tie up the SAN.